package model.factory;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;


import model.dao.CargoDepartamentoDAO;
import model.dao.FolhaPagamentoDAO;
import model.dao.FuncionarioDAO;
import model.dao.UsuarioDAO;


import model.dao.DepartamentoDAO;


public abstract class FactoryDAO {

	private static EntityManager manager;
	private static final EntityManagerFactory factory;


	static 
	{
			factory = Persistence.createEntityManagerFactory("projetoRH_pu");
			
			if(manager == null || !manager.isOpen() )
			{
				manager = factory.createEntityManager();
			}
	}
	
	public static DepartamentoDAO getDepartamentoDAO()
	{
		DepartamentoDAO departamentoDAO = new DepartamentoDAO();
		departamentoDAO.setEntitymanager(manager);
		return departamentoDAO;
		
	}
	
	public static FuncionarioDAO getFuncionarioDAO(){
		
		FuncionarioDAO funcionarioDAO = new FuncionarioDAO();
		funcionarioDAO.setEntitymanager(manager);
		return funcionarioDAO;
	}

	public static UsuarioDAO getUsuarioDAO(){
		
		UsuarioDAO usuarioDAO = new UsuarioDAO();
		usuarioDAO.setEntitymanager(manager);
		return usuarioDAO;
	}

	public static CargoDepartamentoDAO getCargoDepartamentoDAO(){
		
		CargoDepartamentoDAO cargoDepartamentoDAO = new CargoDepartamentoDAO();
		cargoDepartamentoDAO.setEntitymanager(manager);
		return cargoDepartamentoDAO;
	}
	
public static FolhaPagamentoDAO getFolhaPagamentoDAO(){
		
		FolhaPagamentoDAO folhaPagamentoDAO = new FolhaPagamentoDAO();
		folhaPagamentoDAO.setEntitymanager(manager);
		return folhaPagamentoDAO;
	}
	
}
